home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / wild / support / precalc_shadepalettergb.bas < prev    next >
BASIC Source File  |  1999-01-01  |  3KB  |  121 lines

  1. '$include basu:_command.bas
  2. '$include basu:_cut.bas
  3. '$include basu:_filereq.bas
  4. '$include basu:_loadpalette.bas
  5.  
  6. ' That makes a table of palettes, from the darkest to the brightest.
  7. ' There are 64 shades from 0 to 255 intensity, wich are calced looking
  8. ' for the color with the luminosity. So, the last palette is the real
  9. ' palette, NOT a brighter palette.
  10. ' Then, for specialfx, I add 64 more shades, and those colors are
  11. ' calced with the normal color added at $iiiiii. The max $ii is 255.
  12. ' That's good to draw transparent objects (not coloured, with this...)
  13.  
  14. '''pal$=FileReq$("WildPJ:Libs/Wild/Draw","Select a RGB32 palette","#?.rgb32")
  15. pal$="EscapeLevels:BackGrounds/Various1.rgb32"
  16.  
  17. FUNCTION BestCol(RF%,GF%,BF%,ER%,EG%,EB%)
  18.  SHARED R%(),G%(),B%()
  19.  LOCAL p%,BER&,CER&,CEG&,CEB&,BC%,CE&
  20.  BER&=2^20
  21.  FOR p%=0 TO 255
  22.   CER&=ABS(R%(p%)-RF%)*ER%
  23.   CEG&=ABS(G%(p%)-GF%)*EG%
  24.   CEB&=ABS(B%(p%)-BF%)*EB%
  25.   CE&=CER&+CEG&+CEB&
  26.   IF CE&<BER& THEN BER&=CE&:BC%=p%
  27.  NEXT p%
  28.  BestCol=BC%
  29. END FUNCTION
  30.  
  31. DIM TableR(127,255)    'pal,col
  32. DIM TableG(127,255)    'pal,col
  33. DIM TableB(127,255)    'pal,col
  34.  
  35. IF pal$<>""
  36.  SCREEN 1,640,300,8,5
  37.  WINDOW 1,"Palette Shades Creator",,,1
  38.  CALL LoadPalette(pal$,1)
  39.  CLS
  40.  sx=WINDOW(2)/15
  41.  sy=WINDOW(3)/15
  42.  
  43.  FOR i=63 TO 0 STEP -1
  44.   FOR c=0 TO 255 
  45.    RTF=R%(c)+(i+1)*4
  46.    GTF=G%(c)
  47.    BTF=B%(c)
  48.    IF RTF>255 THEN RTF=255
  49.    BC%=BestCol(RTF,GTF,BTF,9,4,1)
  50.    PSET (c,i+64),BC%
  51.    TableR(i+64,c)=BC%
  52.  
  53.    RTF=R%(c)
  54.    GTF=G%(c)+(i+1)*4
  55.    BTF=B%(c)
  56.    IF GTF>255 THEN GTF=255
  57.    BC%=BestCol(RTF,GTF,BTF,5,10,3)
  58.    PSET (c+256,i+64),BC%
  59.    TableG(i+64,c)=BC%
  60.  
  61.    RTF=R%(c)
  62.    GTF=G%(c)
  63.    BTF=B%(c)+(i+1)*4
  64.    IF BTF>255 THEN BTF=255
  65.    BC%=BestCol(RTF,GTF,BTF,1,2,4)
  66.    PSET (c,i+64+128),BC%
  67.    TableB(i+64,c)=BC%
  68.   NEXT c
  69.  NEXT i
  70.  
  71.  FOR i=63 TO 0 STEP -1
  72.   FOR c=0 TO 255
  73.    RTF=R%(c)*(i+1)/64
  74.    GTF=G%(c)
  75.    BTF=B%(c)
  76.    BC%=BestCol(RTF,GTF,BTF,9,4,1)
  77.    PSET (c,i),BC%
  78.    TableR(i,c)=BC%
  79.  
  80.    RTF=R%(c)
  81.    GTF=G%(c)*(i+1)/64
  82.    BTF=B%(c)
  83.    BC%=BestCol(RTF,GTF,BTF,5,10,3)
  84.    PSET (c+256,i),BC%
  85.    TableG(i,c)=BC%
  86.  
  87.    RTF=R%(c)*(i+1)/64
  88.    GTF=G%(c)
  89.    BTF=B%(c)
  90.    BC%=BestCol(RTF,GTF,BTF,1,2,4)
  91.    PSET (c,i+128),BC%
  92.    TableB(i,c)=BC%
  93.   NEXT c
  94.  NEXT i
  95.  
  96.  OPEN "WildPJ:Trash/Various1R.preka" FOR OUTPUT AS 1
  97.   FOR i=0 TO 127
  98.    FOR c=0 TO 255
  99.     PRINT #1,CHR$(TableR(i,c));
  100.    NEXT c
  101.   NEXT i
  102.  CLOSE 1
  103.  OPEN "WildPJ:Trash/Various1G.preka" FOR OUTPUT AS 1
  104.   FOR i=0 TO 127
  105.    FOR c=0 TO 255
  106.     PRINT #1,CHR$(TableG(i,c));
  107.    NEXT c
  108.   NEXT i
  109.  CLOSE 1
  110.  OPEN "WildPJ:Trash/Various1B.preka" FOR OUTPUT AS 1
  111.   FOR i=0 TO 127
  112.    FOR c=0 TO 255
  113.     PRINT #1,CHR$(TableB(i,c));
  114.    NEXT c
  115.   NEXT i
  116.  CLOSE 1
  117. END IF
  118.  
  119.  
  120.  
  121.